package com.aft.terra.modules.game.service;

import java.util.List;

import com.aft.terra.common.bean.DateBean;
import com.aft.terra.common.bean.Message;
import com.aft.terra.modules.basic.model.Adver;
import com.aft.terra.modules.game.model.MonthlyList;
import com.aft.terra.modules.game.model.OnList;
import com.aft.terra.modules.game.model.RankingList;
import com.aft.terra.modules.game.model.Rule;
import com.aft.terra.modules.game.model.User;
import com.aft.terra.modules.game.model.WeeklyChart;
import com.aft.terra.modules.game.model.Winning;
import com.aft.terra.modules.game.service.impl.GameServiceImpl;
import com.jfinal.aop.Duang;
import com.jfinal.core.Controller;

public interface GameService {

	public static final GameService service = Duang.duang(GameServiceImpl.class);

	/**
	 * 获取当前用户的剩余游戏次数
	 * @param user对象
	 * @return
	 */
	User querUser(String userId);

	/**
	 * 获取总排行榜数据
	 * @return 数据集合
	 */
	List<RankingList> queryRankingList();

	/**
	 * 获取日榜排行榜数据
	 * @return 数据集合
	 */
	List<OnList> queryOnList(String date);
	
	/**
	 * 获取周榜排行榜数据
	 * @return 数据集合
	 */
	List<WeeklyChart> queryWeeklyChart(String date);

	/**
	 * 获取月榜排行榜数据
	 * @return 数据集合
	 */
	List<MonthlyList> queryMonthlyList(String date);
	
	/**
	 * 游戏开始  
	 * @param userId 用户id
	 * @return  返回数据对象
	 */
	Message startGame(Controller controlelr ,String userId);
	/**
	 *  游戏是否开启
	 * @return 0  游戏开启 1 游戏还没有开始  2 游戏结束
	 */
	Integer queryGameStartDateOnEndDate();
	/**
	 *  更新游戏数据 
	 * @param gdId  游戏表id
	 * @param userId 用户id
	 * @param score 积分
	 * @return
	 */
	Message updateGameData(String gdId, String userId,Integer score);
	
	/**
	 * 保存手机号
	 * @param phone 手机号
	 * @param userId 用户id
	 * @return 返回数据对象
	 */
	Message updateUserPhone(String phone,String userId,User user);

	/**
	 * 随机抽奖
	 * @param userId 用户id
	 * @return 数据对象
	 */
	Message randomLuckDraw(String userId);

	/**
	 * 分享 
	 * @param userId 用户id
	 * @return 数据对象
	 */
	Message saveShareUserCount(String userId,String type);

	/**
	 * 支付一分钱
	 * @param controller
	 * @return
	 */
	String getCcbPay(Controller controller);
	
	/**
	 * 支付5毛钱
	 * @param controller
	 * @return
	 */
	String getNewCcbPay(Controller controller);
	
	/**
	 * 获取用户支付笔数
	 * @param userId 用户id
	 * @return 数据对象
	 */
	Message getUserOrders(String userId);
	
	/**
	 * 只查询中的5元话费的
	 * @return 奖品集合
	 */
	List<Winning> getPrizeList();
	
	/**
	 * 获取规则集合
	 * @return 规则集合
	 */
	List<Rule> getRuleList();

	List<DateBean> getLuckDrawList(Integer type);

	List<Adver> getAdverList();

	String getNewCallBackPay(Controller controller);

	Message getRankingIndex(String userId,String type,String date);

	Integer getIntercept(String userId);

	String getNameConfig();
	
}
